//package com.ocom.mqsimple.utils;
//
//
//import com.ocom.mqsimple.config.ChangeAccessMqConfig;
//import com.ocom.mqsimple.config.RabbitMqConfig;
//import com.ocom.mqsimple.config.WxMqConfig;
//import lombok.extern.slf4j.Slf4j;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.amqp.AmqpException;
//import org.springframework.amqp.core.Message;
//import org.springframework.amqp.core.MessageBuilder;
//import org.springframework.amqp.core.MessagePostProcessor;
//import org.springframework.amqp.core.MessageProperties;
//import org.springframework.amqp.rabbit.connection.CorrelationData;
//import org.springframework.amqp.rabbit.core.RabbitTemplate;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.cloud.context.config.annotation.RefreshScope;
//import org.springframework.stereotype.Component;
//
//@RefreshScope
//@Component
//@Slf4j
//public class RabbitProductUitlCopy implements RabbitTemplate.ConfirmCallback{
//	private final Logger log = LoggerFactory.getLogger(RabbitProductUitlCopy.class);
//	@Autowired
//	private RabbitTemplate rabbitTemplate;
//
//	/**
//	 * 微信订阅消息
//	 * @param orderId
//	 * @param priority	优先级
//	 */
//	public void wxsend(String orderId,Integer priority) {
//		// 封装消息
//		Message message = MessageBuilder.withBody(orderId.getBytes()).setContentType(MessageProperties.CONTENT_TYPE_JSON)
//				.setPriority(priority).setContentEncoding("utf-8").setMessageId(orderId).build();
//
//
//		// 构建回调返回的数据
//		CorrelationData correlationData = new CorrelationData(orderId);
//		// 发送消息
//		rabbitTemplate.setMandatory(true);
//		rabbitTemplate.setConfirmCallback(this);
//
//		// 消息后处理对象,设置一些消息的参数信息
//		MessagePostProcessor messagePostProcessor = new MessagePostProcessor() {
//			@Override
//			public Message postProcessMessage(Message message) throws AmqpException {
//				//1.设置message的信息
//				// 第二个方法：消息的过期时间 ,5秒之后过期   弄23小时过期 TODO
//				message.getMessageProperties().setExpiration("3600000");
//				//2.返回该消息
//				return message;
//			}
//		};
//
//		rabbitTemplate.setExchange(WxMqConfig.WX_EXCHANGE);
//
//		rabbitTemplate.convertAndSend("routingKeys", message,messagePostProcessor, correlationData);
//		log.info("消息发送完成了----------");
//	}
//
//	/**
//	 *
//	 * @param orderId
//	 * @param priority	优先级
//	 */
//	public void send(String orderId,Integer priority) {
//		// 封装消息
//		Message message = MessageBuilder.withBody(orderId.getBytes()).setContentType(MessageProperties.CONTENT_TYPE_JSON)
//				.setPriority(priority).setContentEncoding("utf-8").setMessageId(orderId).build();
//
//
//		// 构建回调返回的数据
//		CorrelationData correlationData = new CorrelationData(orderId);
//		// 发送消息
//		rabbitTemplate.setMandatory(true);
//		rabbitTemplate.setConfirmCallback(this);
//
//		// 消息后处理对象,设置一些消息的参数信息
//		MessagePostProcessor messagePostProcessor = new MessagePostProcessor() {
//			@Override
//			public Message postProcessMessage(Message message) throws AmqpException {
//				//1.设置message的信息
//				// 第二个方法：消息的过期时间 ,5秒之后过期   弄23小时过期 TODO
//				message.getMessageProperties().setExpiration("3600000");
//				//2.返回该消息
//				return message;
//			}
//		};
//
//		rabbitTemplate.setExchange(RabbitMqConfig.CREATE_EXCEL_EXCHANGE);
//
//		rabbitTemplate.convertAndSend("routingKeys", message,messagePostProcessor, correlationData);
//		log.info("消息发送完成了----------");
//	}
//
//	/**
//	 * 更改门禁权限
//	 * @param changeAccess
//	 * @param priority	优先级
//	 */
//	public void changeAccess(String changeAccess,Integer priority) {
//		// 封装消息
//		Message message = MessageBuilder.withBody(changeAccess.getBytes()).setContentType(MessageProperties.CONTENT_TYPE_JSON)
//				.setPriority(priority).setContentEncoding("utf-8").setMessageId(changeAccess).build();
//
//
//		// 构建回调返回的数据
//		CorrelationData correlationData = new CorrelationData(changeAccess);
//		// 发送消息
//		rabbitTemplate.setMandatory(true);
//		rabbitTemplate.setConfirmCallback(this);
//
//		// 消息后处理对象,设置一些消息的参数信息
//		MessagePostProcessor messagePostProcessor = new MessagePostProcessor() {
//			@Override
//			public Message postProcessMessage(Message message) throws AmqpException {
//				//1.设置message的信息
//				// 第二个方法：消息的过期时间 ,5秒之后过期   弄23小时过期 TODO
//				message.getMessageProperties().setExpiration("3600000");
//				//2.返回该消息
//				return message;
//			}
//		};
//
//		rabbitTemplate.setExchange(ChangeAccessMqConfig.ACCESS_EXCHANGE);
//
//		rabbitTemplate.convertAndSend("routingKeys", message,messagePostProcessor, correlationData);
//		log.info("消息发送完成【{}】",message);
//	}
//
//	@Override
//	public void confirm(CorrelationData correlationData, boolean ack, String cause) {
//		String orderId = correlationData.getId(); //id 都是相同的哦  全局ID
//		System.out.println("消息id:" + correlationData.getId());
//		if (ack) { //消息发送成功
//			System.out.println("消息发送 确认成功");
//		} else {
//			//重试机制
//			send(orderId,4);
//			System.out.println("消息发送 确认失败:" + cause);
//		}
//	}
//
//}
